home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / !40KSoundDrv.AMOS / !40KSoundDrv.amosSourceCode
Encoding:
AMOS Source Code  |  2000-04-22  |  7.2 KB  |  133 lines

  1. Screen Open 0,640,256,2,$8000
  2. 'VOLOFF=1024 : VOLLEN=16384-VOLOFF 
  3. INST=1
  4. For INST=43 To 43
  5.   NAME$="test" : ILEN=65534 : VOLOFF=60000
  6.   ILEN=10000
  7.  
  8.   If INST=1 Then NAME$="openhihat" : ILEN=8192 : VOLOFF=6000
  9.   If INST=2 Then NAME$="basedrum01" : ILEN=8192 : VOLOFF=7000
  10.   If INST=3 Then NAME$="basedrum01a" : ILEN=8192 : VOLOFF=7000
  11.   If INST=4 Then NAME$="basedrum02" : ILEN=8192 : VOLOFF=7000
  12.   If INST=5 Then NAME$="basedrum02b" : ILEN=8192 : VOLOFF=7000
  13.   If INST=6 Then NAME$="basedrum03" : ILEN=8192 : VOLOFF=7000
  14.   If INST=7 Then NAME$="basedrum03b" : ILEN=8192 : VOLOFF=7000
  15.   If INST=8 Then NAME$="zap00" : ILEN=8192 : VOLOFF=700
  16.   If INST=9 Then NAME$="zap01" : ILEN=8192 : VOLOFF=700
  17.   If INST=10 Then NAME$="zap02" : ILEN=8192 : VOLOFF=700
  18.   If INST=11 Then NAME$="zap03" : ILEN=8192 : VOLOFF=700
  19.   If INST=12 Then NAME$="zap04" : ILEN=4096 : VOLOFF=700
  20.   If INST=13 Then NAME$="hardbass" : ILEN=8192 : VOLOFF=8000
  21.   If INST=14 Then NAME$="sinebass" : ILEN=512 : VOLOFF=513
  22.   If INST=15 Then NAME$="rectbass" : ILEN=512 : VOLOFF=513
  23.   If INST=16 Then NAME$="bass00" : ILEN=512 : VOLOFF=513
  24.   If INST=17 Then NAME$="acid00a" : ILEN=2050 : VOLOFF=4000
  25.   If INST=18 Then NAME$="acid00b" : ILEN=2050 : VOLOFF=4000
  26.   If INST=19 Then NAME$="acid00c" : ILEN=2050 : VOLOFF=4000
  27.   If INST=20 Then NAME$="acid00d" : ILEN=2050 : VOLOFF=4000
  28.   If INST=21 Then NAME$="acid00e" : ILEN=2050 : VOLOFF=4000
  29.   If INST=22 Then NAME$="acid00f" : ILEN=2050 : VOLOFF=4000
  30.   If INST=23 Then NAME$="acid00g" : ILEN=2050 : VOLOFF=4000
  31.   If INST=24 Then NAME$="acid00h" : ILEN=2050 : VOLOFF=4000
  32.   If INST=25 Then NAME$="elecpiano00" : ILEN=8192 : VOLOFF=100
  33.   If INST=26 Then NAME$="elecpiano01" : ILEN=8192 : VOLOFF=100
  34.   If INST=27 Then NAME$="effect00a" : ILEN=65534 : VOLOFF=40000
  35.   If INST=28 Then NAME$="effect00b" : ILEN=65534 : VOLOFF=40000
  36.   If INST=29 Then NAME$="effect01a" : ILEN=65534 : VOLOFF=40000
  37.   If INST=30 Then NAME$="effect01b" : ILEN=65534 : VOLOFF=40000
  38.   If INST=31 Then NAME$="effect02a" : ILEN=65534 : VOLOFF=40000
  39.   If INST=32 Then NAME$="effect02b" : ILEN=65534 : VOLOFF=40000
  40.   If INST=33 Then NAME$="effect03a" : ILEN=65534 : VOLOFF=60000
  41.   If INST=34 Then NAME$="effect03b" : ILEN=65534 : VOLOFF=60000
  42.   If INST=35 Then NAME$="effect03c" : ILEN=65534 : VOLOFF=60000
  43.   If INST=36 Then NAME$="effect03d" : ILEN=65534 : VOLOFF=1000
  44.   If INST=37 Then NAME$="effect03e" : ILEN=65534 : VOLOFF=1000
  45.   If INST=38 Then NAME$="effect04a" : ILEN=65534 : VOLOFF=20000
  46.   If INST=39 Then NAME$="effect04b" : ILEN=65534 : VOLOFF=20000
  47.   If INST=40 Then NAME$="effect04c" : ILEN=65534 : VOLOFF=20000
  48.   If INST=41 Then NAME$="effect04d" : ILEN=65534 : VOLOFF=20000
  49.   If INST=42 Then NAME$="effect04e" : ILEN=65534 : VOLOFF=20000
  50.   If INST=43 Then NAME$="string01" : ILEN=10000 : VOLOFF=70000
  51.   If INST=99 Then NAME$="effect05" : ILEN=65534 : VOLOFF=30000
  52.   VOLLEN=ILEN-VOLOFF
  53.   Gosub MAKEINST
  54.   Wait Key 
  55. Next 
  56. End 
  57. MAKEINST:
  58.   Cls 
  59.   Reserve As Chip Work 9,ILEN
  60.   ST=Start(9)
  61.   AD=ST
  62.   OSC=0
  63.   X=0
  64.   V=0
  65.   For A=0 To ILEN-1
  66.   '  V=Qsin(OSC,64)+Qsin(OSC*16,Max(256-(A/32),0))+Qsin(OSC*16+Qrnd(256),32) 
  67.   '  V=Qsin(OSC*16+Qsin(OSC*4,64),256) 
  68.  
  69.     If INST=1 Then V= Extension_8_1106( Extension_8_1106(OSC,1024),32) : Add OSC,257+ Extension_8_11B8(8)
  70.     If INST=2 Then V= Extension_8_1106(OSC,256) : Add OSC,1+((ILEN-OSC)/1024)
  71.     If INST=3 Then V= Extension_8_1106(OSC,256) : Add OSC,1+((ILEN-OSC+A)/1024)
  72.     If INST=4 Then V= Extension_8_1106(OSC,256) : Add OSC,4+((ILEN-OSC)/1024)
  73.     If INST=5 Then V= Extension_8_1106(OSC,256) : Add OSC,4+((ILEN-OSC+A)/1024)
  74.     If INST=6 Then V= Extension_8_1106(OSC,256) : Add OSC,8+((ILEN-OSC)/1024)
  75.     If INST=7 Then V= Extension_8_1106(OSC,256) : Add OSC,8+((ILEN-OSC+A)/1024)
  76.     If INST=8 Then V= Extension_8_1106(OSC,256) : Add OSC,2+(ILEN/(A*4+4))
  77.     If INST=9 Then V= Extension_8_1106(OSC,256) : Add OSC,2+(ILEN/(A*2+4))
  78.     If INST=10 Then V= Extension_8_1106(OSC,256) : Add OSC,2+(ILEN/(A+4))
  79.     If INST=11 Then V= Extension_8_1106(OSC,256) : Add OSC,2+(ILEN/((A/2)+4))
  80.     If INST=12 Then V= Extension_8_1106(OSC,256) : Add OSC,(ILEN/((A/4)+4))
  81.     If INST=13 Then V= Extension_8_1106(OSC,256) : Add OSC,4+(ILEN/(A*4+4))
  82.     If INST=14 Then V= Extension_8_1106(OSC,128) : Add OSC,4
  83.     If INST=15 Then V= Extension_8_1106(OSC,512) : Add OSC,4
  84.     If INST=16 Then V= Extension_8_1106(OSC,64)+ Extension_8_1106(OSC*2+64,64) : Add OSC,2
  85.     If INST=17 Then V= Extension_8_1106(OSC+V,128) : Add OSC,4
  86.     If INST=18 Then V= Extension_8_1106(OSC+V,128+16) : Add OSC,4
  87.     If INST=19 Then V= Extension_8_1106(OSC+V,128+32) : Add OSC,4
  88.     If INST=20 Then V= Extension_8_1106(OSC+V,128+40) : Add OSC,4
  89.     If INST=21 Then V= Extension_8_1106(OSC+V,128+48) : Add OSC,4
  90.     If INST=22 Then V= Extension_8_1106(OSC+V,128+56) : Add OSC,4
  91.     If INST=23 Then V= Extension_8_1106(OSC+V,128+64) : Add OSC,4
  92.     If INST=24 Then V= Extension_8_1106(OSC+V,128+72) : Add OSC,4
  93.     If INST=25 Then V= Extension_8_1106(OSC,128) : Add OSC,16+ Extension_8_1106(V,12)
  94.     If INST=26 Then V= Extension_8_1106(OSC,128) : Add OSC,16+ Extension_8_1106(V*32,12)
  95.     If INST=27 Then V= Extension_8_1106( Extension_8_1106(OSC,A),128) : Inc OSC
  96.     If INST=28 Then V= Extension_8_1106( Extension_8_1106(OSC,A),128) : Add OSC,2
  97.     If INST=29 Then V= Extension_8_1106(Abs( Extension_8_1106(OSC,A)),128) : Inc OSC
  98.     If INST=30 Then V= Extension_8_1106(Abs( Extension_8_1106(OSC,A)),128) : Add OSC,2
  99.     If INST=31 Then V= Extension_8_1106( Extension_8_1106(OSC,A)+V*2,128) : Inc OSC
  100.     If INST=32 Then V= Extension_8_1106( Extension_8_1106(OSC,A)+V*2,128) : Add OSC,2
  101.     If INST=33 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*2,V),(A/256)+128) : Add OSC,4
  102.     If INST=34 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*4,V),(A/512)+128) : Add OSC,4
  103.     If INST=35 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*8,V),(A/1024)+128) : Add OSC,4
  104.     If INST=36 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*16,V),(A/2048)+128) : Add OSC,4
  105.     If INST=37 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*32,V),(A/4096)+128) : Add OSC,4
  106.     If INST=38 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+1)
  107.     If INST=39 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+2)
  108.     If INST=40 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+4)
  109.     If INST=41 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+8)
  110.     If INST=42 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+16)
  111.     If INST=43 Then V= Extension_8_1106(OSC,64)+ Extension_8_1106(OSC*4+128,32)+ Extension_8_1106(OSC*4+256,16)+ Extension_8_1106( Extension_8_1106(OSC,1024),32) : Add OSC,2
  112.     If INST=0 Then V= Extension_8_1106(OSC,80)+ Extension_8_1106(OSC+ Extension_8_1106(A,A/128),64) : Add OSC,4+ Extension_8_1106(V,3)
  113.  
  114.     If A=>VOLOFF
  115.       V=(V*(VOLLEN-(A-VOLOFF)))/VOLLEN
  116.     End If 
  117.     Poke AD,Min(Max(V,-128),127)
  118.     Gosub DR
  119.     Inc AD
  120.   Next 
  121.    Extension_8_0472 "Audio:Sound/Synth/"+NAME$,9
  122.    Extension_8_1412 1,ST,ILEN,28000
  123. Return 
  124. DR:
  125.   Y=(X/2560)*32+16
  126.   If((X/4) mod 640)=0
  127.     Draw 0,Y To 640,Y
  128.     Plot 0,Y
  129.   End If 
  130.   Draw To((X/4) mod 640),Y+ Extension_8_0BF0(AD)/8
  131.   Inc X
  132.   If X>20480 Then Cls : X=0
  133. Return